﻿'''
题目描述
学校组织活动，将学生排成一个矩形方阵。
请在矩形方阵中找到最大的位置相连的男生数量。
这个相连位置在一个直线上，方向可以是水平的，垂直的，成对角线的或者呈反对角线的。
注：学生个数不会超过10000
输入描述
输入的第一行为矩阵的行数和列数，接下来的n行为矩阵元素，元素间用”,”分隔。
输出描述
输出一个整数，表示矩阵中最长的位置相连的男生个数。
示例1
输入
3,4
F,M,M,F
F,M,M,F
F,F,F,M
输出
3
解题思路
题目要求在一个由学生组成的矩形方阵中，找到最大的位置相连的男生数量。这里“相连”是指男生的所在位置可以通过水平、垂直、对
角线或反对角线方向连续连接。
代码思路
遍历整个方阵中的每个元素，当找到一个男生M时，调用getMaxConnected方法，开始从该位置搜索最长连续的M数量。
getMaxConnected方法实现了四个方向的搜索（水平、垂直、对角线、反对角线）：
水平（从左往右）：从当前位置向右方向扫描，计算连续的M数量。
垂直（从上往下）：从当前位置向下方向扫描，计算连续的M数量。
对角线（左上到右下）：从当前位置向右下方向扫描，计算连续的M数量。
反对角线（右上到左下）：从当前位置向左下方向扫描，计算连续的M数量。
每找到一条连续的男生M，将其数量添加到结果列表res中。
示例解释
给定输入：
3,4
F,M,M,F
F,M,M,F
F,F,F,M
构建的矩阵为：
F M M F
F M M F
F F F M
逐个扫描矩阵，当扫描到M时（如[0,1]位置的M），开始四个方向的搜索。
水平：M (0,1) 和 (0,2)，长度为2
垂直：M (0,1), (1,1)，长度为2
对角线：M (0,1)，只有一个
反对角线：M (0,2), (1,3)，长度为2
将结果存入max_res，最后在整个矩阵中找到的最大连续M的数量是3（在对角线方向上）。
最终输出结果为3。
'''
#从三个方向搜索，因为遍历是0行0列开始所以只需从左到右，从上到下，从左上到右下
def get_max_connected(students, row, column, res):
    length = 1  # 初始化连续的M的个数为1
    a, b = 0, 0  # 初始化行和列的索引
    m, n = len(students), len(students[0])  # 获取方阵的行数和列数

    if column < n:  # 从左往右搜索
        a = row
        b = column
        while b < n - 1 and students[a][b + 1] == "M":  # 不越界且下一个元素为M
            b += 1
            length += 1  # 连续的M的个数加1
        res.append(length)  # 把连续的M的个数加入结果数组
        length = 1  # 重新初始化连续的M的个数为1

    if row < m:  # 从上往下搜索
        a = row
        b = column
        while a < m - 1 and students[a + 1][b] == "M":  # 不越界且下一个元素为M
            a += 1
            length += 1  # 连续的M的个数加1
        res.append(length)  # 把连续的M的个数加入结果数组
        length = 1  # 重新初始化连续的M的个数为1

    if row < m and column < n:  # 对角线搜索
        a = row
        b = column
        while a < m - 1 and b < n - 1 and students[a + 1][b + 1] == "M":  # 不越界且下一个元素为M
            a += 1
            b += 1
            length += 1  # 连续的M的个数加1
        res.append(length)  # 把连续的M的个数加入结果数组
        length = 1  # 重新初始化连续的M的个数为1
'''
    if row >= 0 and column < n:  # 从右往左搜索
        a = row
        b = column
        while a > 0 and b < n - 1 and students[a - 1][b + 1] == "M":  # 不越界且下一个元素为M
            a -= 1
            b += 1
            length += 1  # 连续的M的个数加1
        res.append(length)  # 把连续的M的个数加入结果数组
'''

#读取输入
row, column = map(int, input().split(","))

# 初始化方阵
students = []
for _ in range(row):
    students.append(input().split(","))

max_res = []  # 初始化结果数组
for i in range(row):
    for j in range(column):
        if students[i][j] == "M":
            get_max_connected(students, i, j, max_res)  # 在三个方向上搜索连续的M

max_res.sort(reverse=True)  # 对结果数组排序,降序排列
print(max_res[0])  # 输出最大的连续的M的个数
